db5c06
@@ -28,6 +28,7 @@
 import org.apache.hadoop.io.FloatWritable;
 import org.apache.hadoop.io.IntWritable;
 import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.NullWritable;
 
 @description(
     name = "-",
@@ -42,36 +43,54 @@
public UDFOPNegative() {
 
   @Override
   public ByteWritable evaluate(ByteWritable a) {
+    if ( a == null ) {
+      return null;
+    }
     byteWritable.set((byte)-a.get());
     return byteWritable;
   }
 
   @Override
   public ShortWritable evaluate(ShortWritable a) {
+    if ( a == null ) {
+      return null;
+    }
     shortWritable.set((short)-a.get());
     return shortWritable;
   }
 
   @Override
   public IntWritable evaluate(IntWritable a) {
+    if ( a == null ) {
+      return null;
+    }
     intWritable.set(-a.get());
     return intWritable;
   }
 
   @Override
   public LongWritable evaluate(LongWritable a) {
+    if ( a == null ) {
+      return null;
+    }
     longWritable.set(-a.get());
     return longWritable;
   }
 
   @Override
   public FloatWritable evaluate(FloatWritable a) {
+    if ( a == null ) {
+      return null;
+    }
     floatWritable.set(-a.get());
     return floatWritable;
   }
 
   @Override
   public DoubleWritable evaluate(DoubleWritable a) {
+    if ( a == null ) {
+      return null;
+    }
     doubleWritable.set(-a.get());
     return doubleWritable;
   }
